package aboutTime;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;

/**
 * 设置统一订单的生成时间
 * 订单项繁多时,如直接用当前时间GmtOrder赋值,和GmtCreate(GmtModified)(数据库给出的写入时间)会出现时间差
 * 甚至在0时前生成的订单会出现跨天的情况
 * 顾先获取统一的now再赋值
 */
public class OrderCreatTime {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
//        order.setGmtOrder(now);
//        order.setGmtCreate(now);
//        order.setGmtModified(now);
        //一个月前
        LocalDateTime startTime=LocalDateTime.now().minusMonths(1);
        //现在
        LocalDateTime endTime=now;
// =======================================================================
        //判断时间的早晚关系
        if (endTime.isBefore(startTime)){
            System.out.println("结束时间早于开始时间");
        }
        //等效写法---国际项目时间的比较,时区转换
        Instant instant = endTime.toInstant(ZoneOffset.of("+8"));//转成0时区时间
        System.out.println(instant);//5月12日16点打印结果 2023-05-12T08:44:41.515Z
        long epochMilli = instant.toEpochMilli();//1970年至今的毫秒数
        System.out.println(epochMilli);//1683881081515

        if(endTime.toInstant(ZoneOffset.of("+8")).toEpochMilli()<
        startTime.toInstant(ZoneOffset.of("+8")).toEpochMilli()){
            System.out.println("结束时间早于开始时间");
        }
// =======================================================================
    }

}
